package com.honghe.system.mapper;

import java.util.List;
import java.util.Map;
import com.honghe.system.domain.BankCustomerCases;
import org.apache.ibatis.annotations.Param;

/**
 * 客户信息Mapper接口
 * 
 * @author ruoyi
 * @date 2025-04-13
 */
public interface BankCustomerCasesMapper 
{
    /**
     * 查询客户信息
     * 
     * @param caseId 客户信息主键
     * @return 客户信息
     */
    public BankCustomerCases selectBankCustomerCasesByCaseId(Long caseId);

    /**
     * 查询客户信息列表
     * 
     * @param bankCustomerCases 客户信息
     * @return 客户信息集合
     */
    public List<BankCustomerCases> selectBankCustomerCasesList(BankCustomerCases bankCustomerCases);

    /**
     * 获取公海池数量统计
     * 
     * @param bankCustomerCases 查询参数
     * @return 公海池数量统计列表
     */
    public List<Map<String, Object>> selectPoolCounts(BankCustomerCases bankCustomerCases);

    /**
     * 获取时间段内新增客户统计
     * 
     * @param params 参数Map，包含beginTime（开始时间）、endTime（结束时间）、poolType（公海池类型）
     * @return 新增客户统计列表
     */
    public List<Map<String, Object>> selectNewCustomerStats(Map<String, Object> params);

    /**
     * 批量更新公海池信息
     * 
     * @param params 参数Map，包含ids（客户ID列表）、handlerUser（经办人）、poolType（公海池类型）、updateBy（更新人）
     * @return 结果
     */
    public int updateCasesPool(Map<String, Object> params);

    /**
     * 新增客户信息
     * 
     * @param bankCustomerCases 客户信息
     * @return 结果
     */
    public int insertBankCustomerCases(BankCustomerCases bankCustomerCases);

    /**
     * 修改客户信息
     * 
     * @param bankCustomerCases 客户信息
     * @return 结果
     */
    public int updateBankCustomerCases(BankCustomerCases bankCustomerCases);

    /**
     * 删除客户信息
     * 
     * @param caseId 客户信息主键
     * @return 结果
     */
    public int deleteBankCustomerCasesByCaseId(Long caseId);

    /**
     * 批量删除客户信息
     * 
     * @param caseIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteBankCustomerCasesByCaseIds(Long[] caseIds);

    /**
     * 测试更新关联人信息
     * 
     * @param caseId 客户ID
     * @param contactPersonName 关联人姓名JSON
     * @param contactPersonPhone 关联人电话JSON
     * @param contactPersonIdCard 关联人身份证号码JSON
     * @return 结果
     */
    public int updateTestContact(@Param("caseId") String caseId, 
                                @Param("contactPersonName") String contactPersonName, 
                                @Param("contactPersonPhone") String contactPersonPhone,
                                @Param("contactPersonIdCard") String contactPersonIdCard);
}
